/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package MyDataType;

/**
 *
 * @author Welcome
 */
public class MyString extends MyData{
    //<editor-fold defaultstate="collapsed" desc="1/Các thuộc tính cơ bản">
    
    //</editor-fold>

    //<editor-fold defaultstate="collapsed" desc="2/ Các phương thức khởi tạo">
    public MyString() {
        super();
        myType = MyType.STRING;
    }
    
    public MyString(String strContent) {
        super(strContent);
        myType = MyType.STRING;
    }
    //</editor-fold>

    //<editor-fold defaultstate="collapsed" desc="3/ Các phương thức Getter/Setter">
    
    //</editor-fold>
    
    //<editor-fold defaultstate="collapsed" desc="4/ Các phương thức xử lý nghiệp vụ">
    public boolean isEqual(MyString pattern)
    {
        String tempStr = pattern.getContent();
        return content.equals(tempStr);
    }
    
    public boolean isLike(MyString pattern)
    {
        
        String patternContent = pattern.getContent();
        if(patternContent.indexOf("%")==0)
        {
            //Dau % o dau pattern
            return content.endsWith(patternContent.substring(1));
        }
        if(patternContent.indexOf("%")==patternContent.length())
        {
            //Dau % o cuoi pattern
            int  pos = content.indexOf(patternContent.substring(0, patternContent.length()-1));
            if(pos ==0)
                return true;
            else
                return false;
        }
        
        String[] temp = patternContent.split("%");
        int[] intList = new int[temp.length];
        
        for(int i=0;i<temp.length;i++)
        {
            int pos = content.indexOf(temp[i]);
            intList[i] = pos;
        }
        
        for(int i=0; i<intList.length-1;i++)
        {
            if(intList[i]>intList[i+1])
                return false;
        }
        
        return true;
    }
    
    @Override
    public MyType getType() {
        return myType;
    }
    //</editor-fold>

    @Override
    public boolean comparisonWith(MyData myData,String sign) {
        MyString tempString = (MyString)myData;
        
        if(sign.trim().equals("="))
        {
            return this.isEqual(tempString);
        }
        else
        {
            if(sign.trim().toLowerCase().equals("like"))
                return this.isLike(tempString);
        }
        return false;
    }

 

}
